home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / frefs11.lha / FetchRefs / Rexx / GoFetchRefs.ged < prev    next >
Text File  |  1994-10-28  |  3KB  |  102 lines

  1. /*   $VER: GoFetchRexx.ged 1.1 (28.10.94)
  2. **
  3. **   ARexx script to invoke FetchRefs from GoldED.
  4. */
  5.  
  6. /* Static part of the editor's ARexx port name. That is, the name before any
  7.  * suffixes (like '.1') are appended.
  8.  */
  9. editorname = 'GOLDED'
  10.  
  11. /* Set some options of ARexx */
  12. OPTIONS RESULTS
  13. OPTIONS FAILAT 21
  14. SIGNAL ON SYNTAX
  15.  
  16. /* Get the name of the ARexx port of the caller and return an error if it
  17.  * is not like the 'editorname' variable above.
  18.  */
  19. caller = ADDRESS()
  20. IF (LEFT(caller, LENGTH(editorname)) ~= editorname) THEN
  21.     EXIT 10
  22.  
  23. /* Get the current line and cursor position from the editor. */
  24. 'Lock Current'
  25. IF (rc ~= 0) THEN
  26.     EXIT 0
  27. 'Query Buffer'
  28. line = result
  29. 'Query Column'
  30. position = result
  31.  
  32. /* Isolate the actual word */
  33. function = line
  34. function = RIGHT(function, LENGTH(function) - position + 1)
  35. cutat = VERIFY(function, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_#?")
  36.  
  37. IF cutat > 0 THEN
  38.     function = LEFT(function, cutat - 1)
  39.  
  40. /* Define a temporary filename to put the reference into */
  41. cutat = VERIFY(function, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_")
  42. if cutat > 0 THEN
  43.     basename = LEFT(function, cutat - 1)
  44. ELSE
  45.     basename = function
  46.  
  47. filename = 'T:FR_'basename
  48.  
  49. /* It doesn't matter whether we want a taglist, varargs og whatever function */
  50. IF RIGHT(function, 7) = "TagList" THEN
  51.     function = LEFT(function, LENGTH(function) - 7)
  52. ELSE IF RIGHT(function, 4) = "Tags" THEN
  53.     function = LEFT(function, LENGTH(function) - 4)
  54. ELSE IF RIGHT(function, 1) = "A" THEN
  55.     function = LEFT(function, LENGTH(function) - 1)
  56.  
  57. /* Now actually get the reference */
  58. ADDRESS 'FETCHREFS'
  59. FR_GET function || '(%|Tags|TagList|A)' filename CASE FILEREF
  60. gotoline = rc2
  61.  
  62. /* Address editor again to load the file */
  63. ADDRESS VALUE caller
  64.  
  65. IF rc ~= 0 THEN DO
  66.     /* Skip if the error was '.....!'. This occours whenever the 'select
  67.      * from what file' window is closed, which is not really an error, so 
  68.      * I don't want it reported.
  69.      */
  70.     IF RIGHT(rc2, 1) = '!' THEN DO
  71.         'UnLock'
  72.         EXIT 0
  73.     END
  74.  
  75.     /* Report the error (obtained from FetchRefs) in the editor. */
  76.     Request Status '"'RC2'"'
  77.  
  78.     /* Return to editor. */
  79.     'Unlock'
  80.     EXIT 0
  81. END
  82. ELSE DO
  83.     /* Make the editor open a new window and load the reference into it. */
  84.     'Open New Name' filename
  85.  
  86.     /* If FetchRefs provided us with a goto line then we jump to that line. */
  87.     IF gotoline ~= 0 THEN
  88.         'Goto' gotoline
  89.     'Unlock'
  90.  
  91.     /* Delete the temporary file */
  92.     ADDRESS COMMAND 'Run >NIL: C:Delete >NIL:' filename
  93.  
  94.     EXIT 0
  95. END
  96.  
  97. SYNTAX:
  98.     ADDRESS VALUE caller
  99.     'Unlock'
  100.     EXIT 0
  101.  
  102.